Many modern software applications display three-dimensional representations of objects and scenes as part of a user interface. Three-dimensional (3D) graphics are used in a wide range of applications including video games, simulations, virtual and augmented reality applications, geospatial information applications, and applications for mapping and navigation. In many applications, 3D graphics are more useful than two-dimensional (2D) graphics at depicting real-world environments and locations because the normal interaction between humans and the real-world occurs in three dimensions.
To display three-dimensional graphics, the computing system requires geometry information for structures and other items in the three-dimensional virtual environment along with various other pieces of data including textures and lighting information to perform the processing to produce a graphical depiction of the virtual environment. In some instances, a large number of comparatively small graphical models, such as trees, are displayed within the virtual environment. Storing individual graphical models for a large number of trees or other small objects is often impractical, so some prior art systems employ various techniques for procedural generation to display groups of multiple trees using a comparatively small set of geometric data that can be stored in memory in a practical manner. Procedurally generated graphics refer to graphics, including 3D graphics, which a computing device generates using a comparatively small set of stored graphics data including models and textures and one or more computational algorithms to construct complex graphical scenes from the stored graphics data. For example, generating a large forest using a small set of graphical models that represent a few individual trees is a common application of procedurally generated graphics.
While procedurally generated graphics reduce the requirements for complex pre-generated graphical models for a virtual environment, the prior art procedural generation techniques also require more computational power to perform the algorithms that are required to generate the virtual environment and generate the graphics for a large number of objects, often numbering in the thousands of objects or more, in a scene. While powerful graphics hardware that is commercially available can perform these algorithms, many embedded and lower-power computing devices cannot perform the prior art procedural generation techniques at acceptable performance levels. Consequently, improved techniques for procedural generation of graphics for large numbers of objects in a computationally efficient manner would be beneficial.